package com.pizza.database;

import java.rmi.*;
import java.util.*;
import com.pizza.abstrait.*;
import com.pizza.model.*;

/**
 * interface IPizzaManager, interface RMI
 *
 */
public interface IPizzaManager extends Remote
{
	/*
	 * Méthodes du serveur accessibles par le client pour la gestion d'un CLIENT
	 */
	public boolean createClientDB(Client _client) throws RemoteException;

	public boolean updateClientDB(AbstractClient _client) throws RemoteException;

	public Client getClientByMail(String _mail) throws RemoteException;

	public boolean addAdresse(AbstractClient _client, AbstractAdresse _adresse)
			throws RemoteException;

	public boolean removeAdresse(AbstractClient _client, AbstractAdresse _adresse)
			throws RemoteException;

	public List<AbstractAdresse> getListAdressesLivraison(AbstractClient _client)
			throws RemoteException;

	/*
	 * Méthodes du serveur accessibles par le client pour la gestion d'une
	 * COMMANDE
	 */
	public boolean createCommandeDB(Commande _commande) throws RemoteException;
	
	public int createPizzasPerso(Pizza _pizza) throws RemoteException;

	public Commande getCommandeById(int id) throws RemoteException;

	public ArrayList<Ingredient> getListTousLesIngredients() throws RemoteException;
	
	public ArrayList<AbstractArticle> getListTousLesArticles() throws RemoteException;

	public ArrayList<AbstractArticle> getListArticlesBoissons() throws RemoteException;

	public ArrayList<AbstractArticle> getListArticlesDesserts() throws RemoteException;

	public ArrayList<AbstractPizza> getListPizzas() throws RemoteException;

	public ArrayList<AbstractPizza> getListPizzasPersos(AbstractClient client)
			throws RemoteException;
	
	public ArrayList<AbstractCommande> getListCommandesClient(AbstractClient client)
			throws RemoteException;
}
